﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DataLayer.dbml;

namespace DataLayer.Controller
{
    /// <summary>
    /// Clase responsable del manejo de las cuentas
    /// </summary>
    public class AccountController : GenericController<CUENTA, DataClassesDataContext>
    {
        /// <summary>
        /// Retorna la cuenta correspondiente a un nit
        /// </summary>
        /// <param name="nit">Nit del que se desea buscar la cuenta</param>
        /// <returns></returns>
        public static CUENTA GetCuentaByNit(string nit)
        {
            CUENTA cta = (from c in DataContext.CUENTA
                          where c.NIT_CUENTA == nit
                          select c).FirstOrDefault();

            return cta;
        }

        /// <summary>
        /// Busca si un nit pertenece a una cuenta o a un cliente final. Retorna un arreglo de dos posiciones:
        /// Posicion 0:tipoCliente, que puede ser "CLIENTEFINAL" o "CUENTA", y la posicion 1 con el id de la cuenta
        /// o cliente final
        /// </summary>
        /// <param name="nit"></param>
        /// <returns></returns>
        public static string[] GetIdCuenta(string nit)
        {
            string[] arrRetorno;
            arrRetorno = new string[2];
            string idCuenta = "";
            string tipoCliente = "";

            var q = from c in DataContext.CUENTA
                    where c.NIT_CUENTA == nit
                    select c;

            if (q.Count() == 0)
            {
                var q2 = from cl in DataContext.CLIENTE_FINAL
                         where cl.NIT_CLIENTEFINAL == nit
                         select cl;

                if (q2.Count() > 0)
                {
                    idCuenta = q2.First().ID_CLIENTEFINALSDFC;
                    tipoCliente = "CLIENTEFINAL";
                }
                
            }
            else
            {
                idCuenta = q.First().ID_CUENTASFDC;
                tipoCliente = "CUENTA";
            }

            arrRetorno[0] = tipoCliente;
            arrRetorno[1] = idCuenta;

            return arrRetorno;
        }


    }
}
